if (typeof jQuery !== 'undefined') {
	(function($) {
		$('#spinner').ajaxStart(function() {
			$(this).fadeIn();
		}).ajaxStop(function() {
			$(this).fadeOut();
		});
		
		$('input[hint], textarea[hint]').each(function(){
			$this = $(this);
			if ($this.val() === '') {
				$this.val($this.attr('hint'));
				$this.addClass('hinted');
			}
		});
		
		$('form').on('focus', 'input[hint], textarea[hint]', function(){
			$this = $(this);
			if ($this.val() === $this.attr('hint')) {
				$this.val('');
				$this.removeClass('hinted');
			}
		}).on('blur', 'input[hint], textarea[hint]', function(){
			$this = $(this);
			if ($this.val() === '') {
				$this.val($this.attr('hint'));
				$this.addClass('hinted');
			}
			
		});
		
		$('form').submit(function(){
			$('form .hinted').each(function(){
				$(this).val('')
			});
			return true;
		});
		
		if ($('.time')[0]) {
			$( '.time' ).datetimepicker({ 
				onClose: function(dateText, inst) {
					$(this).removeClass('hinted');
				}
			});
		}
		
		//$( document ).tooltip();	
		
		$('#usrFeedBk').click(function(){
			$( "#memberFeedbackPanel" ).dialog( "open" );
		});
		
		$('#memberFeedbackPanel').dialog({
	        autoOpen: false,
	        height: 430,
	        width: 350,
	        modal: true,
	        buttons: {
	            "Send": function() {
	                var bValid = true;

	                allFields.removeClass( "ui-state-error" );

	                bValid = bValid && checkLength( text, "text", 3, 400 );
	                if (email[0]) {
	                	bValid = bValid && checkLength( email, "email", 6, 80 );

	                	bValid = bValid && checkRegexp( email, /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i, "eg. ui@pijunn.com" );
	                }
	                	
	                if ( bValid ) {
	                	$('#memberFeedbackPanel form').submit();
	                }
	            },
	            Cancel: function() {
	                $( this ).dialog( "close" );
	            }
	        },
	        close: function() {
	            allFields.val( "" ).removeClass( "ui-state-error" );
	        }
		});

	    var text = $( "#feedbackText" ),
	    email = $( "#feedbackEmail" ),
	    allFields = $( [] ).add( text ).add( email ),
	    tips = $( ".validateTips" );

	    function updateTips( t ) {
			tips
			    .text( t )
			    .addClass( "ui-state-highlight" );
			setTimeout(function() {
			    tips.removeClass( "ui-state-highlight", 1500 );
			}, 500 );
		}
		
		function checkLength( o, n, min, max ) {
			if ( o.val().length > max || o.val().length < min ) {
			    o.addClass( "ui-state-error" );
			    updateTips( "Length of " + n + " must be between " +
			        min + " and " + max + "." );
			    return false;
			} else {
			    return true;
			}
		}
		
		function checkRegexp( o, regexp, n ) {
			if ( !( regexp.test( o.val() ) ) ) {
			    o.addClass( "ui-state-error" );
			    updateTips( n );
			    return false;
			} else {
			    return true;
			}
		}
		
		$( 'input[name="mailingAddress.zipCode"], input[name="mailing.zipCode"]' ).autocomplete({
            source: function( request, response ) {
                $.ajax({
                    url: "http://api.geonames.org/postalCodeSearchJSON",
                    data: {
                        username: "pijunn",
                        style: "full",
                        maxRows: 12,
                        country: $('select[name="mailingAddress.country"]')[0] ? $('select[name="mailingAddress.country"]').val() : $('select[name="mailing.country"]').val(),
                        postalcode_startsWith: request.term
                    },
                    success: function( data ) {
                    	if (typeof(data) == 'string')
                    		data = JSON.parse(data);
                        response( $.map( data.postalCodes, function( item ) {
                            return {
                                label: item.postalCode + " - " + item.placeName + ", " + item.adminName1 + " (" + item.adminName2 + ")",
                                value: item.postalCode,
                                city: item.placeName,
                                state: item.adminCode1
                            }
                        }));
                    }
                });
            },
            minLength: 2,
            select: function( event, ui ) {
            	var prefix = $('input[name="mailingAddress.zipCode"]')[0] ? 'mailingAddress' : 'mailing'
                $('input[name="' + prefix + '.city"]').val(ui.item.city);
                 $('input[name="' + prefix + '.state"]').val(ui.item.state);
            },
            open: function() {
                $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
            },
            close: function() {
                $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
            }
        });	
	})(jQuery);
		
	function feedbackSent() {
		$('.ui-dialog-buttonset').add('span').addClass('spinner');
	}
	
	function feedbackComplete() {
		$( "#memberFeedbackPanel" ).dialog( "close" );
		$( '.spinner').hide();
		// Put status somewhere
		alert('Your feedback has been sent.  We appreciate it!')
	}

}
